package com.example.exceldemo.model;

import lombok.Data;

import java.io.Serializable;
import java.util.Collections;
import java.util.List;

/**
 * 分页结果封装
 */
@Data
public class PageResult<T> implements Serializable {
    
    private static final long serialVersionUID = 1L;
    
    /**
     * 当前页数据
     */
    private List<T> list;
    
    /**
     * 当前页码
     */
    private int pageNum;
    
    /**
     * 每页条数
     */
    private int pageSize;
    
    /**
     * 总记录数
     */
    private int total;
    
    /**
     * 总页数
     */
    private int pages;
    
    /**
     * 创建分页结果
     */
    public static <T> PageResult<T> of(List<T> list, int pageNum, int pageSize, int total) {
        PageResult<T> result = new PageResult<>();
        result.setList(list);
        result.setPageNum(pageNum);
        result.setPageSize(pageSize);
        result.setTotal(total);
        
        // 计算总页数
        if (pageSize > 0) {
            result.setPages((total + pageSize - 1) / pageSize);
        } else {
            result.setPages(0);
        }
        
        return result;
    }
    
    /**
     * 创建空的分页结果
     */
    public static <T> PageResult<T> empty(Integer pageNum, Integer pageSize) {
        return of(Collections.emptyList(), pageNum != null ? pageNum : 1, pageSize != null ? pageSize : 10, 0);
    }
} 